package map;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @classname:HashmapDemo
 * @description:
 * @author: Mr.Z
 * @date: 2020/12/13 23:39
 * @version: 0.1
 * @since:1.8
 */
public class HashmapDemo {
    public static void main(String[] args) {
        HashMap<String, Object> map = new HashMap<>(16);
        ArrayList<String> hobby = new ArrayList<>(10);
        hobby.add("code");
        hobby.add("music");
        hobby.add("sport");
        map.put("name", "张三");
        map.put("age", 23);
        map.put("gender", 1);
        map.put("hobby", hobby);

//        Set<String> set = map.keySet();//通过keySet集合拿到map的key集合
//        for (String key : set) {
//            Object obj = map.get(key);//通过get方法拿到map的value值
//            if ("gender".equals(key)) {
//                Integer gender = (Integer) obj;
//                obj = (gender.equals(1)) ? "男" : "女";
//            }
//            System.out.println("key:" + key + "\t" + "value:" + obj);
//        }


        //KeySet()  获得集合里面的所有key 不推荐
//        Set<String> set = map.keySet();
//        set.forEach((key)->{
//            Object obj = map.get(key);
//            if("gender".equals(key)){
//                Integer gender = (Integer)obj;
//                obj = (gender.equals(1))?"男":"女";
//            }
//            System.out.println("key:"+key+"\t"+"value:"+obj);
//        });



        //entrySet()  获得map集合里面所有k和v(Entry)放到set里面
        Set<Map.Entry<String, Object>> entries = map.entrySet();
        entries.forEach((entry)->{
            String key = entry.getKey();
            Object value = entry.getValue();
            if("gender".equals(key)){
                Integer gender = (Integer)value;
                value = (gender.equals(1))?"男":"女";
            }
            System.out.println("key :"+key+"\tvalue"+value);

        });


        System.out.println(map.size());
//        Object name = map.get("name");
//        System.out.println(name);
//
//        Object name1 = map.remove("name");//单参数的返回值是删除的对象如果删除失败返回值为null
//        boolean remove = map.remove("name", "张三");//
//        System.out.println(remove);//多参数的返回值是布尔类型的
//        System.out.println(name1);
//        System.out.println(map);

//        map.replace("name","李逵");
//        System.out.println(map);
//        map.replace("name","李逵","张三");//方法的多参数返回值都是布尔类型
//
//        System.out.println(map);
//        Collection<Object> values = map.values();//返回map的所有value值到collection集合之中
//        System.out.println(values);

//        map.clear();
//        System.out.println(map);


    }
}
